package com.yxp.offer;

import com.yxp.util.PrintUtil;

/**
 * @author : yang.xp
 * @date : 2021/9/4 9:36
 * @description : 剑指 Offer 66. 构建乘积数组
 * <p>
 * 给定一个数组 A[0,1,…,n-1]，请构建一个数组 B[0,1,…,n-1]，其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。
 */
public class Problem66 {

    public static void main(String[] args) {
        Problem66 problem66 = new Problem66();
        PrintUtil.printIntArray(problem66.constructArr(new int[]{1, 2, 3, 4, 5}));
    }

    public int[] constructArr(int[] nums) {
        int[] result = new int[nums.length];
        for (int i = 0, preResult = 1; i < nums.length; preResult *= nums[i++]) {
            result[i] = preResult;
        }
        for (int i = nums.length - 1, subResult = 1; i >= 0; subResult *= nums[i--]) {
            result[i] *= subResult;
        }

        return result;
    }


}
